# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from itertools import islice



class OSS:

    def __init__(self,endpoint = 'https://oss-cn-zhangjiakou.aliyuncs.com',bucketname = 'playtrac-court-dev'):
        
        self.endpoint = endpoint
        self.bucketname = bucketname
        # 从环境变量中获取访问凭证。运行本代码示例之前，请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        self.auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
        # 填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
        # yourBucketName填写存储空间名称。
        self.bucket = oss2.Bucket(self.auth ,self.endpoint , self.bucketname)

    def create_bucket(self,):

        # 设置存储空间为私有读写权限。
        self.bucket.create_bucket(oss2.models.BUCKET_ACL_PRIVATE)
        return self.bucket

    def uploadfile(self,yourObjectName,yourLocalFile):

        # 上传文件到OSS。
        # yourObjectName由包含文件后缀，不包含Bucket名称组成的Object完整路径，例如abc/efg/123.jpg。
        # yourLocalFile由本地文件路径加文件名包括后缀组成，例如/users/local/myfile.txt。
        self.bucket.put_object_from_file(yourObjectName, yourLocalFile)
        return


    def downloadfile(self,yourObjectName,yourLocalFile):

    
        #下载OSS文件到本地文件。
        # yourObjectName由包含文件后缀，不包含Bucket名称组成的Object完整路径，例如abc/efg/123.jpg。
        # yourLocalFile由本地文件路径加文件名包括后缀组成，例如/users/local/myfile.txt。
        self.bucket.get_object_to_file(yourObjectName, yourLocalFile)
        return 


    def listfile(self,):

        # oss2.ObjectIterator用于遍历文件。
        for b in islice(oss2.ObjectIterator(self.bucket), 10):
            print(b.key)
        return 

    def deletefile(self,deletefilename):

        # yourObjectName表示删除OSS文件时需要指定包含文件后缀，不包含Bucket名称在内的完整路径，例如abc/efg/123.jpg。
        self.bucket.delete_object(deletefilename)

        return 



if __name__ == '__main__':
    myoss = OSS()
    myoss.uploadfile('video/123/456/202311091018/','video/123/456/202311091018/')
    # myoss.deletefile('video/123/456/202311091018/test1.jpg')
    # myoss.listfile()
    # myoss.downloadfile('video/123/456/202311091018/test.jpg','hhh.jpg')